package com.lfy.modules.blog.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.lfy.modules.blog.domain.LeaveMessageEntity;
import com.lfy.modules.blog.domain.dto.leave.LeaveMsgAdminDTO;
import com.lfy.modules.blog.domain.dto.leave.LeaveMsgDTO;
import com.lfy.modules.blog.domain.vo.web.LeaveMsgAdminVO;
import com.lfy.modules.blog.domain.vo.web.LeaveMsgVO;
import com.lfy.modules.common.domain.PageResultVO;
import com.lfy.modules.common.domain.R;
import com.lfy.modules.common.domain.entity.UserEntity;

import java.util.List;

/**
* @author 吕飞扬
* @description 针对表【blog_leave_message】的数据库操作Service
* @createDate 2024-06-28 23:35:33
*/
public interface LeaveMessageService extends IService<LeaveMessageEntity> {
    /**
     * 获取留言列表
     * @param pageNum 页码
     * @param pageSize 页大小
     * @param url blog 唯一标识
     * @return R
     */
    R<PageResultVO<LeaveMsgVO>> getLeaveMsgByPage(Integer pageNum, Integer pageSize, String url);

    /**
     * 获取子留言
     * @param url 留言url
     * @param parentMsgId 父留言id
     * @return R
     */
    R<List<LeaveMsgVO>> getChildLeaveMsg(String url, Long parentMsgId);

    /**
     * 添加留言
     * @param dto 留言DTO
     * @return R
     */
    R<Void> addLeaveMsg(LeaveMsgDTO dto);

    /**
     * 点赞
     * @param msgId 留言id
     * @return R
     */
    R<Void> like(Long msgId, Integer type);

    /**
     * 获取留言列表（管理员）
     * @param pageNum 页码
     * @param pageSize 页大小
     * @param user 用户
     * @return R
     */
    R<PageResultVO<LeaveMsgAdminVO>> getLeaveMsgByAdmin(Integer pageNum, Integer pageSize, UserEntity user);

    R<Void> deleteLeaveMsg(Long id, UserEntity user);

    /**
     * 回复留言（管理员）
     * @param dto 留言DTO
     * @param user 用户
     * @return R
     */
    R<Void> replyLeaveMsg(LeaveMsgAdminDTO dto, UserEntity user);

    /**
     * 获取子留言（管理员）
     * @param id 父留言id
     * @return R
     */
    R<List<LeaveMsgAdminVO>> getChildrenLeaveMsg(Long id);
}
